package com.hualan.sfzyproject.mapper;

import com.hualan.sfzyproject.domain.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
/**
* @author LUCK
* @description 针对表【consultants】的数据库操作Mapper
* @createDate 2025-01-02 16:01:40
* @Entity com.hualan.sfzyproject.domain.Consultants
*/
public interface ConsultantsMapper {

    int deleteByPrimaryKey(Long id);

    int insert(Consultants record);
    //注册
    int insertSelective(Consultants record);
    //根据id查询
    Consultants selectByPrimaryKey(Long id);
    //通过名字查询咨询师
    Consultants selectByName(String consultantName);
    //修改
    int updateByPrimaryKeySelective(Consultants record);

    int updateByPrimaryKey(Consultants record);

//      查询所有咨询师地域（只有地域哦，）
    List<Consultants> selectAllConsultantsAddress();

//    咨询师详情  十表查询!
    Consultants selectConsultantsDetail(Long id);

    //    咨询筛选动态查询
    List<ConsultantSimple> selectDynamicQueries(ConsultantsDynamicQueries dynamicQueries);

    List<Consultants> selectConsultantsByLevel(int consultantLevelId);

    List<Consultants> selectConsultantsByLike1(String like);
//    查询所有咨询师（后台）
    List<Consultants> selectAllConsultants(@Param("offset") int offset, @Param("pageSize") int pageSize);


//    模糊查询咨询师（后台）
    List<Consultants> selectConsultantsByLike
    (@Param("offset") int offset, @Param("pageSize") int pageSize, @Param("name") String name);



//收费标准查询（后台）
    List<FeeManagement> selectAllFeeManagement(int consultantId);

//    收费类型查询（后台）
    List<ChargeStandardType> selectAllChargeStandardType();

//    删除收费标准（后台）
    int deleteFeeManagement(@Param("chargeTypeId") int chargeTypeId, @Param("consultantId") int consultantId);
    //添加收费标准（后台）
    int insertChargeStandardAssociation(ChargeStandardAssociation chargeStandardAssociation);


    //咨询筛选动态查询咨询师    六表联查
    List<Consultants> selectConsultantsByMysql(
            // 擅长领域的area_id列表，用于动态筛选擅长领域
            @Param("areaIds") List<Integer> areaIds,
            // 收费类型的id值，用于筛选收费类型相关条件
            @Param("chargeTypeId") Integer chargeTypeId,
            // 咨询师等级的id值，用于筛选对应等级的咨询师
            @Param("consultantLevelId") Integer consultantLevelId,
            // 咨询师性别条件，用于按性别筛选
            @Param("gender") String gender,
            // 咨询师地址条件，用于按地址筛选
            @Param("address") String address,
            // 擅长领域部分中期望匹配的领域数量，用于HAVING子句的动态比较条件
            @Param("areaCount") Integer areaCount);
}



